#include "GameStateFac.h"

#include "ST_LOGO.h"
#include "ST_MainMenu.h"
#include "ST_LOAD.h"
#include "ST_RUN.h"
#include "ST_Script.h"
#include "ST_ScriptDlg.h"
#include "ST_RESULT.h"
#include "GameSelPlane.h"
#include "ST_HELP.h"
#include "ST_MUSIC.h"
#include "ST_ABOUT.h"
#include "ST_SYSTEM.h"
#include "ST_RANKING.h"
#include "ST_PASS.h"
#include "ST_PAUSE.h"
#include "ST_OVER.h"
#include "ST_CG.h"
#include "ST_SelLevel.h"
namespace LTGame
{

	GameState* CGameStateFac::CreateState(GST_FLAG flag)
	{
		switch(flag){
		case GST_Logo:
			return new ST_LOGO(GST_Logo);
		case GST_MainMenu:
			return new ST_MainMenu(GST_MainMenu);
		case GST_Load:
			return new ST_LOAD(GST_Load);
		case GST_Run:
			return new ST_RUN(GST_Run);
		case GST_Script:
			return new CST_Script(GST_Script);
		case GST_ScriptDlg:
			return new CST_ScriptDlg(GST_ScriptDlg);
		case GS_StatisticsResult:
			return new ST_RESULT(GS_StatisticsResult);
		case GST_SelPlane:
			return new GameSelPlane(GST_SelPlane);
		case GST_Help:
			return new ST_HELP(GST_Help);
		case GST_SetMusic:
			return new ST_MUSIC(GST_SetMusic);
		case GST_About:
			return new ST_ABOUT(GST_About);
		case GST_System:
			return new ST_SYSTEM(GST_System);
		case GST_Ranking:
			return new ST_RANKING(GST_Ranking);
		case GST_GamePass:
			return new ST_PASS(GST_GamePass);
		case GST_GamePause:
			return new ST_PAUSE(GST_GamePause);
		case GST_GameOver:
			return new ST_OVER(GST_GameOver);
		case GST_GameCG:
			return new ST_CG(GST_GameCG);
		case GST_GameSelLevel:
			return new ST_SelLeve(GST_GameSelLevel);
		default:
			assert(false);
			return NULL;
		}
	}


}